/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.documentar.model;

import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import javax.swing.DefaultComboBoxModel;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author Santos
 */
public class ConsultarDocumentoModel {

    /*Principais*/
    private ProdutoModel produto;
    private CategoriaVersaoModel categoriaVersao;
    private DocumentarModel documento;
    private TabelaModel tabela;
    private ColunaModel coluna;
    private ObjetoModel objetoModel;

    /*Auxiliares*/
    private VersaoModel versao;
    private CategoriaArvoreModel categoria;
    private AssociarTabelaVersaoModel tabelaVersao;
    private AssociarColunaVersaoModel colunaVersao;

    /*Filtros*/
    private String filtroProduto;
    private String filtroVersao;
    private String filtroCategoria;
    private String filtroTela;
    private String filtroPosicao;
    private String filtroAba;
    private String filtroNomeCampo;
    private String filtroFuncaoParamentro;
    private String filtroExemplo;
    private String filtroTabela;
    private String filtroTabelaNomeAmigavel;
    private String filtroColuna;
    private String filtroColunaNomeAmigavel;
    private String filtroObjeto;
    private String filtroObjetoNomeAmigavel;
    private String nomeTela;

    public String getNomeTela() {
        return nomeTela;
    }

    public void setNomeTela(String nomeTela) {
        this.nomeTela = nomeTela;
    }

    public String getFiltroTabelaNomeAmigavel() {
        return filtroTabelaNomeAmigavel;
    }

    public void setFiltroTabelaNomeAmigavel(String filtroTabelaNomeAmigavel) {
        this.filtroTabelaNomeAmigavel = filtroTabelaNomeAmigavel;
    }

    public String getFiltroColunaNomeAmigavel() {
        return filtroColunaNomeAmigavel;
    }

    public void setFiltroColunaNomeAmigavel(String filtroColunaNomeAmigavel) {
        this.filtroColunaNomeAmigavel = filtroColunaNomeAmigavel;
    }

    public String getFiltroObjetoNomeAmigavel() {
        return filtroObjetoNomeAmigavel;
    }

    public void setFiltroObjetoNomeAmigavel(String filtroObjetoNomeAmigavel) {
        this.filtroObjetoNomeAmigavel = filtroObjetoNomeAmigavel;
    }

    public ObjetoModel getObjetoModel() {
        if (objetoModel == null) {
            objetoModel = new ObjetoModel();
        }
        return objetoModel;
    }

    public void setObjetoModel(ObjetoModel objetoModel) {
        this.objetoModel = objetoModel;
    }

    public String getFiltroTela() {
        return filtroTela;
    }

    public void setFiltroTela(String filtroTela) {
        this.filtroTela = filtroTela;
    }

    public String getFiltroObjeto() {
        return filtroObjeto;
    }

    public void setFiltroObjeto(String filtroObjeto) {
        this.filtroObjeto = filtroObjeto;
    }

    public String getFiltroExemplo() {
        return filtroExemplo;
    }

    public void setFiltroExemplo(String filtroExemplo) {
        this.filtroExemplo = filtroExemplo;
    }

    public String getFiltroTabela() {
        return filtroTabela;
    }

    public void setFiltroTabela(String filtroTabela) {
        this.filtroTabela = filtroTabela;
    }

    public String getFiltroColuna() {
        return filtroColuna;
    }

    public void setFiltroColuna(String filtroColuna) {
        this.filtroColuna = filtroColuna;
    }

    public AssociarTabelaVersaoModel getTabelaVersao() {
        if (tabelaVersao == null) {
            tabelaVersao = new AssociarTabelaVersaoModel();
        }
        return tabelaVersao;
    }

    public void setTabelaVersao(AssociarTabelaVersaoModel tabelaVersao) {
        this.tabelaVersao = tabelaVersao;
    }

    public AssociarColunaVersaoModel getColunaVersao() {
        if (colunaVersao == null) {
            colunaVersao = new AssociarColunaVersaoModel();
        }
        return colunaVersao;
    }

    public void setColunaVersao(AssociarColunaVersaoModel colunaVersao) {
        this.colunaVersao = colunaVersao;
    }

    /**
     * Ação do script SQL na execução do programa
     */
    private String actionScript;
    /**
     * Modelo de um comboBox para utiliza nas telas
     */
    private DefaultComboBoxModel modelComboBox;
    /**
     * Modelo de uma table para utilizar nas telas
     */
    private DefaultTableModel modelTable;
    /**
     * Lista contendo os dados relacionados da consulta feita na tabela setor.
     * Mas é necessário rever o nome dessa variável, sugestão: lista+Classe
     */
    private List<ConsultarDocumentoModel> listaConsultarDocumento;
    /**
     * Variavel responsável por recepcionar dados extraidos das consultas
     * executadas na banco de dados
     */
    private ResultSet resultSet;

    public ProdutoModel getProduto() {
        if (produto == null) {
            produto = new ProdutoModel();
        }
        return produto;
    }

    public void setProduto(ProdutoModel produto) {
        this.produto = produto;
    }

    public CategoriaVersaoModel getCategoriaVersao() {
        if (categoriaVersao == null) {
            categoriaVersao = new CategoriaVersaoModel();
        }
        return categoriaVersao;
    }

    public void setCategoriaVersao(CategoriaVersaoModel categoriaVersao) {
        this.categoriaVersao = categoriaVersao;
    }

    public DocumentarModel getDocumento() {
        if (documento == null) {
            documento = new DocumentarModel();
        }
        return documento;
    }

    public void setDocumento(DocumentarModel documento) {
        this.documento = documento;
    }

    public TabelaModel getTabela() {
        if (tabela == null) {
            tabela = new TabelaModel();
        }
        return tabela;
    }

    public void setTabela(TabelaModel tabela) {
        this.tabela = tabela;
    }

    public ColunaModel getColuna() {
        if (coluna == null) {
            coluna = new ColunaModel();
        }
        return coluna;
    }

    public void setColuna(ColunaModel coluna) {
        this.coluna = coluna;
    }

    public VersaoModel getVersao() {
        if (versao == null) {
            versao = new VersaoModel();
        }
        return versao;
    }

    public void setVersao(VersaoModel versao) {
        this.versao = versao;
    }

    public CategoriaArvoreModel getCategoria() {
        if (categoria == null) {
            categoria = new CategoriaArvoreModel();
        }
        return categoria;
    }

    public void setCategoria(CategoriaArvoreModel categoria) {
        this.categoria = categoria;
    }

    public String getFiltroProduto() {
        return filtroProduto;
    }

    public void setFiltroProduto(String filtroProduto) {
        this.filtroProduto = filtroProduto;
    }

    public String getFiltroVersao() {
        return filtroVersao;
    }

    public void setFiltroVersao(String filtroVersao) {
        this.filtroVersao = filtroVersao;
    }

    public String getFiltroCategoria() {
        return filtroCategoria;
    }

    public void setFiltroCategoria(String filtroCategoria) {
        this.filtroCategoria = filtroCategoria;
    }

    public String getFiltroPosicao() {
        return filtroPosicao;
    }

    public void setFiltroPosicao(String filtroPosicao) {
        this.filtroPosicao = filtroPosicao;
    }

    public String getFiltroAba() {
        return filtroAba;
    }

    public void setFiltroAba(String filtroAba) {
        this.filtroAba = filtroAba;
    }

    public String getFiltroNomeCampo() {
        return filtroNomeCampo;
    }

    public void setFiltroNomeCampo(String filtroNomeCampo) {
        this.filtroNomeCampo = filtroNomeCampo;
    }

    public String getFiltroFuncaoParamentro() {
        return filtroFuncaoParamentro;
    }

    public void setFiltroFuncaoParamentro(String filtroFuncaoParamentro) {
        this.filtroFuncaoParamentro = filtroFuncaoParamentro;
    }

    public String getActionScript() {
        return actionScript;
    }

    public void setActionScript(String actionScript) {
        this.actionScript = actionScript;
    }

    public DefaultComboBoxModel getModelComboBox() {
        if (modelComboBox == null) {
            modelComboBox = new DefaultComboBoxModel();
            modelComboBox.addElement("ESCOLHER");
        }
        return modelComboBox;
    }

    public void setModelComboBox(DefaultComboBoxModel modelComboBox) {
        this.modelComboBox = modelComboBox;
    }

    public DefaultTableModel getModelTable() {
        if (modelTable == null) {
            modelTable = new DefaultTableModel();
            modelTable.addColumn("Codigo");
            modelTable.addColumn("Produto");
            modelTable.addColumn("Versão");
            modelTable.addColumn("Categoria");
            modelTable.addColumn("Tela");
            modelTable.addColumn("Aba");
            modelTable.addColumn("Posição");
            modelTable.addColumn("Nome Campo");
            modelTable.addColumn("Função Parâmetro");
            modelTable.addColumn("Exemplo");
            modelTable.addColumn("Imagem da Tela");
            modelTable.addColumn("Anexo");
            modelTable.addColumn("Link do Vídeo");
            modelTable.addColumn("Tabela");
            modelTable.addColumn("Nome Amigável");
            modelTable.addColumn("Tipo Banco");
            modelTable.addColumn("Nome Banco");
            modelTable.addColumn("Acao Tabela");
            modelTable.addColumn("TableSpace");
            modelTable.addColumn("Temporaria");
            modelTable.addColumn("Dono");
            modelTable.addColumn("Coluna");
            modelTable.addColumn("Nome Amigável");
            modelTable.addColumn("Acao Coluna");
            modelTable.addColumn("Tipo Dado");
            modelTable.addColumn("Tamanho");
            modelTable.addColumn("Null");
            modelTable.addColumn("Objeto");
            modelTable.addColumn("Nome Amigável");
        }
        return modelTable;
    }

    public void setModelTable(DefaultTableModel modelTable) {
        this.modelTable = modelTable;
    }

    public List<ConsultarDocumentoModel> getListaConsultarDocumento() {
        if (listaConsultarDocumento == null) {
            listaConsultarDocumento = new ArrayList<>();
        }
        return listaConsultarDocumento;
    }

    public void setListaConsultarDocumento(List<ConsultarDocumentoModel> listaConsultarDocumento) {
        this.listaConsultarDocumento = listaConsultarDocumento;
    }

    public ResultSet getResultSet() {
        return resultSet;
    }

    public void setResultSet(ResultSet resultSet) {
        this.resultSet = resultSet;
    }

    public ConsultarDocumentoModel getConsultarDocumento(int codigo) {
        ConsultarDocumentoModel model = null;
        for (ConsultarDocumentoModel consultarDocumentoModel : getListaConsultarDocumento()) {
            if (consultarDocumentoModel.getDocumento().getCodigo() == codigo) {
                model = consultarDocumentoModel;
                break;
            }
        }
        return model;
    }

}
